//
// Created by 罗俊华 on 2022/1/13.
//
#include <iostream>
#include "string"

using namespace std;

void defineStructAndDeclareStructVariable();

struct student {
    int id;
//    在结构体中使用对象时，需要引入 std 命名空间 或者 使用 std::string name; 来做标识
    string name;
    char slogan[20];
};

int main3() {
    student luo = {
            1, "罗俊华", {'h', 'e', 'l', 'l', 'o'}
    };
    student yan = {
            2, "燕", "天天向上"
    };
//    使用列表初始化结构体中的所有属性为零
//    结构体中的 char[] 中的每个字节都将被设置为0
    student s{};
    cout << "有成员：" << luo.name << luo.slogan << "," << yan.name << yan.slogan << "," << s.name << s.slogan << endl;


    defineStructAndDeclareStructVariable();

    return 0;
}

// 定义结构体的同时声明结构体变量
void defineStructAndDeclareStructVariable() {

//    不建议在定义的同时进行声明
    struct person {
        string name;
//        结构体中甚至可以进行初始化
        int age{};
        int height;
    } luo, yan, other = {"其他人", 12};

    cout << "声明了三个结构体变量，其中一个初始化了" << luo.name << "," << yan.name << "," << other.name << endl;

    person pArr[] = {
            {"罗俊华", 20},
            {"燕",   18}
    };
//  看看不进行初始化的结构体会怎样
    person unInitializedArr[10];

//    计算数组中元素个数的方法
    int length = sizeof(unInitializedArr) / sizeof(person);
    for (int i = 0; i < length; i++) {

        person per = unInitializedArr[i];
        cout << "第" << i << "个元素：" << per.name << "，已初始化的age是：" << per.age << "，未初始化的身高是：" << per.height << endl;
    }

}
